home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1997
/
MacHack 1997.toast
/
Hacks
/
Hacks ’94
/
[√] May be freely distributed
/
Gary J Kacmarcik
/
SchpiderWorks 0.90d
/
UserGuide
< prev
Wrap
Text File
|
1994-10-14
|
5KB
|
119 lines
/* SchpiderWorks User's Guide (sortof)
* Copyright 1993-94 Gary J Kacmarcik
* last updated: 12 JUL 94
*******************
About SchpiderWorks
*******************
What is SchpiderWorks?
----------------------
SchpiderWorks is an integrated POWER/PowerPC code analysis toolkit which
includes an assembler, a disassembler, and an emulator. Most of
SchpiderWorks is still under development -- this document describes the
portions of the program which are in late development or early alpha
stages.
Schpiderworks requires System 7, but will run on either 68k and PowerPC
Macintoshes. It supports high-level Apple Events, drag-and-drop, multiple
files and multiple views into the files simultaneously.
******************
Using SchiperWorks
******************
Selecting a File
----------------
A file can be selected by choosing "Open..." from the File menu, or by
dragging a file onto the SchpiderWorks icon from the Finder.
Currently, XCOFF and PEF files are supported, and support for assembler
source files (with a '.s' extension) is under development.
When a file is successfully opened, a block list window is opened.
*********************
SchpiderWorks Windows
*********************
Block list window
-----------------
The main window for each file is the block list window. This window
contains the address and name of each major block in the file. When this
window is closed, the file is closed and all windows associated with that
file are automatically closed.
Double-clicking on the name of a block in this window will automatically
bring the front-most code window for this file to the front and scroll to
the beginning of the block that was clicked on. If there is no current
code window for this file, a new one is opened. Holding the option key
while double-clicking will force a new code window to be created.
Code (disassembly) window
-------------------------
A new code window can be created by using the Create "" Code Window menu
item or by double-clicking on a block name in the Block list window.
There can be any number of code windows open for a particular file.
Clicking on a label will create a pop-up menu which contains all of the
references to this label, and allows the label symbol to be edited. (***
this is not complete yet ***)
A range of instructions can be selected by clicking on the instructions.
This can be used to copy the disassembly text to the clipboard using the
Edit:Copy command.
Option-clicking on an instruction will cause other instructions to be
hilighted (displayed in bold) if they are part of the clicked
instruction's data flow. Thus, instructions before (i.e.: above in the
listing) the clicked instruction will be hilighted if they set or load a
register that the clicked instruction is dependent upon; and instructions
after (i.e.: below) the clicked instruction will be hilighted if they use
a register which is loaded or set by the clicked instruction.
Note that this is a fairly mindless operation -- branches are ignored when
determining whether an instruction is before or after the clicked
instruction. Thus, instructions will be hilighted even if they are part
of a completely different function (and thus obviously not directly part
of the instructions data flow). Complete data flow analysis would have
been significantly more costly and would have been only slightly more
useful.
To help make up for the limited form of "data flow" analysis used, the
control key while clicking to reverse the conditions which determine
whether an instruction should be hilighted. Thus, when the control key is
held down, the instructions before the clicked instruction will be
hilighted if they _use_ a register which is set by the clicked
instruction; and instructions after the clicked instruction will be
hilighted if they _set_ a register upon which the clicked instruction is
dependent. This is useful, e.g., when an instruction at the end of a loop
sets a value which is used at the beginning of the loop.
Note that the static analysis used to compute the load-use information
does not provide complete information for 3 POWER/PowerPC
instructions. These instructions set a variable number of registers
depending on the current contents of the XER, and thus, which registers
are affected cannot be statically determined. These instructions are:
lscbx (POWER only), lswx, and stswx.
Data window
-----------
A new data window can be created by using the Create "" Data Window menu
item or by option-double-clicking on a block name in the Block list
window. There can be any number of data windows open for a particular
file.
*** data blocks are not currently displayed in the Block list window ***
*/